package com.gxa.mapper;

import com.gxa.pojo.Branch;
import com.gxa.pojo.Ioo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author makejava
 * Date: ${YEAR}/${MONTH}/${DAY}
 * Description: (Ioo)表数据库访问层
 * Version: V1.0
 */
public interface IooMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param iooId 主键
     * @return 实例对象
     */
    Ioo queryById(Integer iooId);

    /**
     * 查询所有库存单
     *
     * @return 对象列表
     */
    List<Ioo> queryAll();

    /**
     * 新增数据
     *
     * @param ioo 实例对象
     * @return 影响行数
     */
    int insert(Ioo ioo);

    /**
     * 修改数据
     *
     * @param ioo 实例对象
     * @return 影响行数
     */
    int update(Ioo ioo);

    /**
     * 通过主键删除数据
     *
     * @param iooId 主键
     * @return 影响行数
     */
    int deleteIooByIooId(@Param("ioo_id") int iooId);

    /**
     * 查询库存单总数
     * @return
     */
    int totalSizeIoo();


    /**
     * 根据库存单id查询入库店面
     * @param iooId
     * @return
     */
    String selectWar_branch_nameByIooId(Integer iooId);

    /**
     * 根据库存单类型查询库存单
     * @param typeState
     * @return
     */
    List<Ioo> queryAllByTypeState(int typeState);

    /**
     * 模糊查询库存单
     * @param ioo
     * @return
     */
    List<Ioo> queryBlurryIoo(Ioo ioo);

    /**
     * 根据库存单审批状态查询库存单
     * @param iooState
     * @return
     */
    List<Ioo> queryIooByIooState(int iooState);

    /**
     * 根据单据编号查询库存单
     * @param bill
     * @return
     */
    Ioo queryIooByBill(String bill);

    /**
     * 根据入库门店名查询分店信息
     * @param warBranchName
     * @return
     */
    Branch selectBranchByWar_branch_name(String warBranchName);

    /**
     * 根据入库门店名查询入库门店id
     * @param warBranchName
     * @return
     */
    int selectBranchCodeByWar_branch_name(@Param("store_name") String warBranchName);

    /**
     * 添加库存单
     * @param ioo
     * @return
     */
    int addIoo(Ioo ioo);

    /**
     * 添加中间表信息
     * @param iooId
     * @param goodsId
     */
    void andGoodsIoo(@Param("iooId") int iooId, @Param("goodsId") int goodsId);

    int addGoodsIoo(@Param("goods_id") Integer goodsId,@Param("goods_quanity") double quanity, @Param("ioo_id") int iooId);

    Ioo queryIooByIooid(int iooid);

    Map<String, Object> selectGoodsIoo(@Param("goods_id") Integer goodsId,@Param("ioo_id") int iooId);

    int updateGoodsIoo(@Param("goods_ioo_id") int goods_ioo_id,@Param("goods_quanity") double goods_quanity);
}